package net.yla.smartbus.module.ba.dataServer.service;

import net.yla.smartbus.module.ba.dataServer.dto.*;
import net.yla.smartbus.module.ba.dataServer.query.DataServerQuery;
import net.yla.smartbus.module.ba.dataServer.query.DeviceDataServerQuery;
import net.yla.smartbus.module.ba.dataServer.query.VersionInfoQuery;

import java.util.List;

public interface DataServerService {

    /**
     * 设备主键集合
     * @return
     */
    List<Integer> listDeviceId(DataServerQuery query);

    /**
     * 查询指定设备信息
     * @param query
     * @return
     */
    List<DataServerDTO> listByDeviceQuery(DeviceDataServerQuery query);

    /**
     * 获取所有车辆列表
     * @return
     */
    List<Integer> listVehicleId(DataServerQuery query);

    /**
     * 获取指定列表的车辆信息
     * @param query
     * @return
     */
    List<VehicleInfoDTO> listVehicleInfo(DeviceDataServerQuery query);

    /**
     * 获取所有线路列表
     * @return
     */
    List<Integer> listRoutes(DataServerQuery query);

    /**
     * 查询指定列表的线路信息
     * @param query
     * @return
     */
    List<RoutesInfoDTO> listRoutesInfo(DeviceDataServerQuery query);

    /**
     * 查询指定线路列表的支线信息
     * @param query
     * @return
     */
    List<LinesInfoDTO> listLinesInfo(DeviceDataServerQuery query);

    /**
     * 获取支线关联的站台列表
     * @param query
     * @return
     */
    List<StandLineDTO> listStandLine(DeviceDataServerQuery query);

    /**
     * 获取所有的站点列表
     * @return
     */
    List<Integer> listStationId(DataServerQuery query);

    /**
     * 查询指定站点列表的站点信息
     * @param query
     * @return
     */
    List<StationInfoDTO> listStationInfo(DeviceDataServerQuery query);

    /**
     * 查询指定站台列表的站台信息
     * @param query
     * @return
     */
    List<StandByStandIdDTO> listStandByStandId(DeviceDataServerQuery query);

    /**
     * 查询驾驶员列表
     * @return
     */
    List<Integer> listDriverId(DataServerQuery query);

    /**
     * 查询驾驶员信息
     * @param query
     * @return
     */
    List<DriverInfoDTO> listDriverInfo(DeviceDataServerQuery query);

    /**
     * 查询支线列表信息
     * @return
     */
    List<Integer> listLineId(DataServerQuery query);

    /**
     * 获取所有站台信息
     * @return
     */
    List<Integer> listStandIdInfo(DataServerQuery query);

    /**
     * 查询指定支线列表的支线信息
     * @param query
     * @return
     */
    List<LineInfoByQueryDTO> listLineInfo(DeviceDataServerQuery query);

    /**
     * 查询记录版本更新信息
     * @param query
     * @return
     */
    List<VersionInfoDTO> listVersion(VersionInfoQuery query);
}
